package stoppuhr;

import javax.swing.JLabel;

/*
 * Zeit ermitteln und GUI aktualisieren 
 */
public class Clock {
	private long startTime, storedTime;
	JLabel label;
	  
	public Clock(ClockFrame view){
		//this.startTime=System.currentTimeMillis();
		this.label = view.DisplayText;
	}
	
	void stop(){
		storedTime=System.currentTimeMillis()-startTime+storedTime;
		startTime=0;
	}
	
	void update(){
		if(startTime == 0)
			startTime=System.currentTimeMillis();
		long diffTime=System.currentTimeMillis();
		diffTime=diffTime-startTime+this.storedTime;
		long millisec=diffTime%1000;
		long sec= (diffTime-millisec)/1000%60;
		long min= (diffTime-sec*1000-millisec)/60000;
		label.setText(
			(min<10?"0":"")+String.valueOf(min)+
			(sec<10?":0":":")+String.valueOf(sec)+
			(millisec<10?":00":(millisec<100?":0":":"))+String.valueOf(millisec)
		);
		
	}
	
	void reset(){
		label.setText("00:00:000");
		startTime=0;
		storedTime=0;
	}
	
	//glaub auch ni sone gute idee wenn der jede milli Sekunde sich so die sekunden errechnen muss
	//wird bei größeren ms doch sehr rechenaufwändig
	String milliToSecString(long time){
		int sec=0;
		for(sec=0; time > 0; ++sec, time/=1000)
			;		
		if(sec < 10)
			return "0"+Integer.toString(sec);
		return Integer.toString(sec);
	}
	

	
}
